This invention relates generally to a graphical user interface to control a computer system. More particularly, it relates to manipulating compound objects within a graphical user interface.
It is well known to provide a graphical user interface (GUI) to allow a user to control a computer system and to present the results of user actions on the system display. In a graphical user interface, objects, e.g., applications and data files, are generally presented as windows or icons. Each object typically has a number of subobjects, generally presented as yet more windows or icons, which are associated with the object and are presented in the display space allocated to the window. The object and each of its subobjects are generally related and stored in memory in a data structure. The subobjects of the main window object may be called child objects of the main window object. As the main window object is composed of other objects, it is called a compound object.
In current graphical user interfaces, the display of cursorable and selectable objects is "flat". There is usually one plane of objects, such as icons representing documents, folders, printers, and so forth on a background sometimes referred to as a desktop. Generally, the GUIs in which these icons exist are homogeneous with respect to types of objects accommodated, or object-specific techniques are used for cursoring and selecting each object type.
Object-oriented graphical user interfaces will need to support compound objects. Compound objects are characterized by heterogeneous hierarchies of objects, nested one inside another, often many levels in depth. The objects involved are typically of widely varying types. For example, a compound text document might also contain a graph and a table. One cell of the table might contain image data, another cell might contain text data, and a third cell a graphical drawing. Each object in each cell might be further composed of yet other objects, and so forth.
Current techniques for selecting and cursoring are generally oriented to flat presentations of objects of the same type, such as icons on a desktop, cells in a spreadsheet, or graphical drawing objects in a graphics application. Techniques are usually provided for both pointing devices, such as a mouse, and keyboards. Keyboard techniques typically involve the use of a cursor, while mouse technique use the mouse pointer. These existing techniques tend to be specialized to each different application type and do not address the problem of compound objects and hierarchical structures. As the techniques vary for different compound objects and different applications, a user does not know quite what to expect when manipulating a new composite object or application. It can be quite annoying to switch between objects or applications which exhibit different selection or cursoring behaviors. The actions taken as a result of a mouse input or a keyboard input can vary widely between compound objects. For some compound objects, the number of keystrokes may be quite large to navigate between levels.
In a single application, such as a document processing application, the application developers have the ability to maintain consistent behavior when the user interacts with diverse compound objects in the graphical user interface. However, in the object oriented programming of the future, where a multitude of objects written by different programmers operate in the same GUI, a single standard is not easy to maintain. The potential exists that at least some of the objects created in the future may have fundamentally different purposes than those presently existing. Rigorous adherence to a single standard could result in long and confusing sequences of keystrokes to navigate between subobjects in a compound object.
The Applicants believe that users need a common and consistent set of techniques for selecting and cursoring within composite objects which has not been provided by the prior art. This invention proposes a model for dealing with hierarchies of objects and techniques for selecting and cursoring across and within levels of hierarchies containing different types of objects.